package com.xnyzc.lhy.statistics.service.search;

import com.xnyzc.lhy.common.entity.Rv;
import com.xnyzc.lhy.statistics.entity.order.OaCOrderPersonal;
import com.xnyzc.lhy.statistics.entity.param.capacity.CapacityParam;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单搜索服务类
 *
 * @author cuixiaojian
 */
public interface OrderSearchService {

    /**
     * 单个订单记录保存
     * @param oaCOrderPersonal 订单 entity
     * @return SucStatus 实体
     */
    boolean submitOrder(OaCOrderPersonal oaCOrderPersonal);

    /**
     * 大批量订单记录保存
     * @param oaCOrderPersonals 订单 entity List
     * @return SucStatus 实体
     */
    boolean batchesSubmitOrder(List<OaCOrderPersonal> oaCOrderPersonals);

    /**
     * 保存订单
     * @return boolean
     */
    boolean saveOrderToSearch();

    /**
     * 订单编号精准匹配
     * @param orderId 订单ID
     * @return OaCOrderPersonal
     */
    OaCOrderPersonal searchOrder(Long orderId);

    /**
     * 今日订单流水
     * @return BigDecimal
     */
    Double orderFlowToDay(CapacityParam capacityParam);

    /**
     * 今日乘客发单量
     */
    Integer userBillCountToDay(CapacityParam capacityParam);

    /**
     * 今日应答订单量
     */
    Integer driverReplyCountToDay(CapacityParam capacityParam);

    /**
     * 今日完成订单量
     */
    Integer driverCompleteCountToDay(CapacityParam capacityParam);

    /**
     * 应答前乘客其他平台受理订单
     */
    Integer priorOtherAcceptance(CapacityParam capacityParam);

    /**
     * 应答后乘客其他平台受理订单
     */
    Integer priorOtherAcceptanceAfter(CapacityParam capacityParam);

    /**
     * 调度超时订单
     */
    Integer getOrderSummaryByOrderStatus(CapacityParam capacityParam);

    /**
     * 应答前乘客取消量
     */
    Integer afterCancellation(CapacityParam capacityParam);

    /**
     * 应答后司机取消订单量
     */
    Integer afterDriverCancel(CapacityParam capacityParam);

    /**
     * 应答后乘客取消订单量
     */
    Integer rearPassengerCancellation(CapacityParam capacityParam);

    /**
     * 客服取消订单量
     */
    Integer serviceCancellation(CapacityParam capacityParam);

    /**
     * 履行中订单量
     */
    Integer inPerformance(CapacityParam capacityParam);

    /**
     * 待支付订单量
     */
    Integer toBePaid(CapacityParam capacityParam);

    /**
     * 已支付订单量
     */
    Integer paidPassengerCancellation(CapacityParam capacityParam);

}
